package com.jenkins.test.proxy.gov.dto.reponse;

import com.jenkins.test.proxy.gov.dto.GovResponse;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;

/**
 * @version V1.0.0
 * @ClassName: {@link DownBaseDataResponse}
 * @Description: DownBaseDataResponse
 * @author: Lanzhou
 * @date: 2022/1/24 10:42
 * @Copyright:2020 All rights reserved.
 */
@Setter
@Getter
@ToString
public class DownBaseDataResponse extends GovResponse {

    /**
     * 行政区划（参照 GB/T 2260）
     */
    List<Region> region = new ArrayList<>();

    /**
     * 区划数据
     */
    @Setter
    @Getter
    @ToString
    static class Region {
        /**
         * ": "110000",
         */
        private String code;
        /**
         * ": "北京市",
         */
        private String fullName;
        /**
         * ": "北京",
         */
        private String name;
        /**
         * ": "000000", // 上一级行政区划编码，全国以"000000"表示。
         */
        private String pcode;
        /**
         * ": 1 // 1：省级，2：市级，3：县级
         */
        private Integer type;
    }

    /**
     * 行业（参照 GB/T 2260）
     */
    List<Industry> industry = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class Industry {
        /**
         * ": "C", // 行业编码
         */
        private String code;
        /**
         * ": "制造业", // 行业全名
         */
        private String fullName;
        /**
         * ": false, // 是否能源加工转换类行业
         */
        private String jgzh;
        /**
         * ": "制造业", // 行业名称
         */
        private String name;
        /**
         * ": "0" // 上一级行业编码
         */
        private String pcode;
    }

    /**
     * 单位类别编码 (参照国统字〔1998〕200 号文件)
     */
    List<EntType> entType = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class EntType {
        /**
         * ": "100",
         */
        private String code;
        /**
         * ": "内资企业"
         */
        private String name;
    }

    /**
     * // 采集系统分类 （详见“NECC-NHJC-02”）
     */
    List<CollectSystemType> collectSystemType = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class CollectSystemType {
        /**
         * ": "1"
         */
        private String code;
        /**
         * ": "管理信息系统"
         */
        private String name;
    }

    /**
     * 生产工序 （详见“NECC-NHJC-02”）
     */
    List<Process> process = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class Process {
        /**
         * ": "01",
         */
        private String code;
        /**
         * ": "焦化工序",
         */
        private String name;
        /**
         * ": "C31" // 所属行业，如“炼钢”
         */
        private String industryCode;
    }

    /**
     * 采集数据项 （详见“NECC-NHJC-02”）
     */
    List<CollectItem> collectItem = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class CollectItem {
        /**
         * ": "01",
         */
        private String code;
        /**
         * ": "一次能源",
         */
        private String name;
        /**
         * ": "", //上一级指标编码
         */
        private String pcode;
        /**
         * ": 1, //1 采集数据类型；2 分类编码；3 分类编码+分项编码
         */
        private String type;
        /**
         * ": "", // 采集数据类型
         */
        private String pclass;
        /**
         * ": "",
         */
        private String industryCode;
        /**
         * ":"" //采集项单位
         */
        private String unit;
    }

    /**
     * [ // 采集数据项数据用途 （详见“NECC-NHJC-02”）
     */
    List<CollectItemUsage> collectItemUsage = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class CollectItemUsage {
        /**
         * ": "11",
         */
        private String code;
        /**
         * ": "购进已消费"
         */
        private String name;
    }

    /**
     * [ // 能源类型，提供各类能源的计量单位和折标系数。同时提供非能源产
     * 品、经营指标的的计量单位
     */
    List<EnergyType> energyType = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class EnergyType {
        /**
         * ": "0100", // 能耗编码；
         */
        private String code;
        /**
         * ": "其它原煤", // 名称
         */
        private String name;
        /**
         * ": "01", // 父编码
         */
        private String pcode;
        /**
         * ": "吨", // 单位
         */
        private String unit;
        /**
         * ": "01", // 大类编码
         */
        private String classCode;
        /**
         * ": "吨标准煤/吨", // 能耗折标单位
         */
        private String nhzbdw;
        /**
         * ": 2, // type=1 是分类；type=2 是分类+分项
         */
        private String type;
        /**
         * ": "0.7143", // 折标量参考值
         */
        private String zbckz;
        /**
         * ": 1 // 单位折标系数
         */
        private String dwzbxs;
    }

    /**
     * [ // 能源类型，提供各类能源的计量单位和折标系数。同时提供非能源产
     * 品、经营指标的的计量单位
     */
    List<ProductQuota> productQuota = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    static class ProductQuota {
        /**
         * ": "0001", // 指标编码
         */
        private String code;
        /**
         * ": "吨钢综合能耗", // 指标名
         */
        private String name;
        /**
         * ": "110101", // 地区编码
         */
        private String regionCode;
        /**
         * ": "C3120", // 行业编码
         */
        private String industryCode;
        /**
         * ": "", // 国标
         */
        private String gbValue;
        /**
         * ": 655, // 地方标准
         */
        private String dbValue;
        /**
         * ": "吨标准煤", // 分子单位
         */
        private String elemUnit;
        /**
         * ": "吨", // 分母单位
         */
        private String denoUnit;
        /**
         * ": "千克标准煤/吨", // 指标单位
         */
        private String quotaUnit;
        /**
         * ": 1000.0 // 单位换算系数
         */
        private String zbxs;
    }


}
